package com.singun.coroutines.demo

import android.util.Log
import kotlinx.coroutines.delay
import kotlinx.coroutines.yield

/**
 * Created by singun on 2019-07-30.
 */
private const val LOG_TAG = "coroutines-ForSource"

object ForSource {
    suspend fun test() {
        // 状态机：游戏非常常用的一种模式
        // 如果一个怪被打死了，应该处于死亡状态，可能需要切下一关，当放了技能时，可能处于无敌状态，要发光等等行为
        // 一个函数如果切分成几段代码和几个状态，保证状态是1->2->3变化，则最终会按照时序来执行
        Log.d(LOG_TAG, "1")
        delay(500)
        repeat(1000) {
            yield()
            Log.d(LOG_TAG, "number count: $it")
        }
        Log.d(LOG_TAG, "2")
    }
}